package com.example.science.util;

public class RedisKey {

    /**
     * 根据手机号生成注册验证码的Redis键。
     *
     * @param mobile 手机号码
     * @return 注册验证码的Redis键
     */
    public static String registerCodeKey(String mobile) {
        return "register:code:mobile:" + mobile;
    }

    /**
     * 根据用户ID生成用户资源的Redis键。
     *
     * @param userId 用户ID
     * @return 用户资源的Redis键
     */
    public static String userResource(Integer userId) {
        return "user:resource:userId:" + userId;
    }

    /**
     * 根据用户ID生成用户权限的Redis键。
     *
     * @param userId 用户ID
     * @return 用户权限的Redis键
     */
    public static String userPermissions(Integer userId) {
        return "user:permissions:userId:" + userId;
    }

    /**
     * 根据手机号、月份和日期生成用户验证码次数的Redis键。
     *
     * @param mobile 手机号码
     * @param month 月份
     * @param day 日期
     * @return 用户验证码次数的Redis键
     */
    public static String userCodeNumber(String mobile, Integer month, Integer day) {
        return "user:code:mobile:" + mobile + ":month:" + month + ":day:" + day;
    }

    /**
     * 根据用户ID生成用户访问信息的Redis键。
     *
     * @param userId 用户ID
     * @return 用户访问信息的Redis键
     */
    public static String userAccess(Integer userId) {
        return "user:access:userId:" + userId;
    }

    /**
     * 根据访问令牌生成访问过期时间的Redis键。
     *
     * @param access 访问令牌
     * @return 访问过期时间的Redis键
     */
    public static String accessExpire(String access) {
        return "access:expire:" + access;
    }

    /**
     * 根据访问令牌生成用户刷新令牌的Redis键。
     *
     * @param access 访问令牌
     * @return 用户刷新令牌的Redis键
     */
    public static String userRefresh(String access) {
        return "user:refresh:" + access;
    }

    /**
     * 根据用户ID生成用户收藏列表的Redis键。
     *
     * @param userId 用户ID
     * @return 用户收藏列表的Redis键
     */
    public static String userCollectList(Integer userId) {
        return "user:collect:userId:" + userId;
    }

    /**
     * 生成系统收藏排名的Redis键。
     *
     * @return 系统收藏排名的Redis键
     */
    public static String sysCollectRank() {
        return "sys:collect:rank";
    }

    /**
     * 生成缓存类型树的Redis键。
     *
     * @return 缓存类型树的Redis键
     */
    public static String cacheTypeTree() {
        return "cache:type:tree";
    }

    /**
     * 根据用户ID生成用户购物列表的Redis键。
     *
     * @param userId 用户ID
     * @return 用户购物列表的Redis键
     */
    public static String userShoppingList(Integer userId) {
        return "user:shopping:userId:" + userId;
    }

    /**
     * 根据用户ID和图书ID生成用户购物详细信息的Redis键。
     *
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 用户购物详细信息的Redis键
     */
    public static String userShoppingDetail(Integer userId, Integer bookId) {
        return "user:shopping:detail:userId:" + userId + ":bookId:" + bookId;
    }

    /**
     * 根据手机号生成锁定手机号的Redis键。
     *
     * @param phone 手机号码
     * @return 锁定手机号的Redis键
     */
    public static String lockPhone(String phone) {
        return "lock:phone:" + phone;
    }

    /**
     * 根据用户名生成锁定用户名的Redis键。
     *
     * @param userName 用户名
     * @return 锁定用户名的Redis键
     */
    public static String lockUserName(String userName) {
        return "lock:username:" + userName;
    }

    /**
     * 根据图书ID生成锁定图书ID的Redis键。
     *
     * @param bookId 图书ID
     * @return 锁定图书ID的Redis键
     */
    public static String lockBookId(Integer bookId) {
        return "lock:bookId:" + bookId;
    }
}
